package com.hb.impl;

import com.hb.interfaces.Dessert;
import com.hb.qualifiers.Cold;
import com.hb.qualifiers.Creamy;
import org.springframework.stereotype.Component;

@Component
// 1、如果带有多个一样限定符的 bean 时在自动装配的时候还是会有歧义。需要使用更多的限定符来将可选范围限定到只有一个 bean。
//@Qualifier("cold")
// 2、Java 不允许在同一个类上重复使用相同类型的多个注解，会编译报错。Java 8 允许出现重复的注解，只要这个注解本身在定义的时候带有 @Repeatable 注解就可以。
// 不过，Spring 的 @Qualifier 注解并没有在定义时添加 @Repeatable 注解。
//@Qualifier("creamy")
// 3、通过声明自定义的限定符注解，我们可以同时使用多个限定符，不会再有 Java 编译器的限制或错误。与此同时，相对于使用原始的 @Qualifier 并借助 String 类型来指定限定符，
// 自定义的注解也更为类型安全。
@Cold
@Creamy
public class Popsicle implements Dessert {
}
